home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_gimp.idb / usr / freeware / share / gimp / scripts / unsharp-mask.scm.z / unsharp-mask.scm
Encoding:
GIMP Script-Fu Script  |  1999-07-21  |  3.2 KB  |  80 lines

  1. ;;; unsharp-mask.scm
  2. ;;; Time-stamp: <1997/10/30 23:27:20 narazaki@InetQ.or.jp>
  3. ;;; Author: Narazaki Shuji <narazaki@inetq.or.jp>
  4. ;;; Version 0.7
  5.  
  6. ;;; Code:
  7.  
  8. (if (not (symbol-bound? 'script-fu-unsharp-mask-mask-size (the-environment)))
  9.     (define script-fu-unsharp-mask-mask-size 5))
  10.  
  11. (define (script-fu-unsharp-mask img drw mask-size)
  12.   (let* ((drawable-width (car (gimp-drawable-width drw)))
  13.      (drawable-height (car (gimp-drawable-height drw)))
  14.      (new-image (car (gimp-image-new drawable-width drawable-height RGB)))
  15.      (original-layer (car (gimp-layer-new new-image 
  16.                           drawable-width drawable-height
  17.                           RGB "Original" 100 NORMAL)))
  18.      (original-layer-for-darker #f)
  19.      (original-layer-for-lighter #f)
  20.      (blured-layer-for-darker #f)
  21.      (blured-layer-for-lighter #f)
  22.      (darker-layer #f)
  23.      (lighter-layer #f))
  24.     (gimp-selection-all img)
  25.     (gimp-edit-copy img drw)
  26.     (gimp-image-disable-undo new-image)
  27.     (gimp-floating-sel-anchor
  28.      (car (gimp-edit-paste new-image original-layer FALSE)))
  29.     (gimp-image-add-layer new-image original-layer 0)
  30.     (set! original-layer-for-darker (car (gimp-layer-copy original-layer TRUE)))
  31.     (set! original-layer-for-lighter (car (gimp-layer-copy original-layer TRUE)))
  32.     (set! blured-layer-for-darker (car (gimp-layer-copy original-layer TRUE)))
  33.     (gimp-layer-set-visible original-layer FALSE)
  34.     (gimp-display-new new-image)
  35.     ;; make darker mask
  36.     (gimp-image-add-layer new-image blured-layer-for-darker -1)
  37.     (plug-in-gauss-iir TRUE new-image blured-layer-for-darker mask-size
  38.                TRUE TRUE)
  39.     (set! blured-layer-for-lighter
  40.       (car (gimp-layer-copy blured-layer-for-darker TRUE)))
  41.     (gimp-image-add-layer new-image original-layer-for-darker -1)
  42.     (gimp-layer-set-mode original-layer-for-darker SUBTRACT)
  43.     (set! darker-layer
  44.       (car (gimp-image-merge-visible-layers new-image CLIP-TO-IMAGE)))
  45.     (gimp-layer-set-name darker-layer "darker mask")
  46.     (gimp-layer-set-visible darker-layer FALSE)
  47.     ;; make lighter mask
  48.     (gimp-image-add-layer new-image original-layer-for-lighter -1)
  49.     (gimp-image-add-layer new-image blured-layer-for-lighter -1)
  50.     (gimp-layer-set-mode blured-layer-for-lighter SUBTRACT)
  51.     (set! lighter-layer
  52.       (car (gimp-image-merge-visible-layers new-image CLIP-TO-IMAGE)))
  53.     (gimp-layer-set-name lighter-layer "lighter mask")
  54.     ;; combine them
  55.     (gimp-layer-set-visible original-layer TRUE)
  56.     (gimp-layer-set-mode darker-layer SUBTRACT)
  57.     (gimp-layer-set-opacity darker-layer 50.0)
  58.     (gimp-layer-set-visible darker-layer TRUE)
  59.     (gimp-layer-set-mode lighter-layer ADDITION)
  60.     (gimp-layer-set-opacity lighter-layer 50.0)
  61.     (gimp-layer-set-visible lighter-layer TRUE)
  62.     (gimp-image-enable-undo new-image)
  63.     (set! script-fu-unsharp-mask-mask-size mask-size)
  64.     (gimp-displays-flush)))
  65.  
  66. (script-fu-register
  67.  "script-fu-unsharp-mask"
  68.  "<Image>/Script-Fu/Alchemy/Unsharp Mask"
  69.  "Make a sharp image of IMAGE's DRAWABLE by applying unsharp mask method"
  70.  "Shuji Narazaki <narazaki@InetQ.or.jp>"
  71.  "Shuji Narazaki"
  72.  "1997"
  73.  "RGB*, GRAY*"
  74.  SF-IMAGE "Image" 0
  75.  SF-DRAWABLE "Drawable to apply" 0
  76.  SF-VALUE "Mask size" (number->string script-fu-unsharp-mask-mask-size)
  77. )
  78.  
  79. ;;; unsharp-mask.scm ends here
  80.